<?php
namespace app\api\controller;
use app\common\controller\Frontend;
use app\common\controller\Api;
use app\common\library\Auth;
use think\facade\Config;
use think\facade\Hook;
use think\facade\Lang;
use think\exception\HttpResponseException;
use think\exception\ValidateException;
use think\Loader;
use think\Controller;
/**
 * 示例接口
 */
class Demo extends Frontend
{

    //如果$noNeedLogin为空表示所有接口都需要登录才能请求
    //如果$noNeedRight为空表示所有接口都需要验证权限才能请求
    //如果接口已经设置无需登录,那也就无需鉴权了
    //
    // 无需登录的接口,*表示全部
    protected $noNeedLogin = ['*'];
    // 无需鉴权的接口,*表示全部
    protected $noNeedRight = ['*'];
    protected $layout = '';

    /**
     * 初始化操作
     * @access public
     */
    public function initialize(){
        //移除HTML标签
        //$this->request->filter('strip_tags');

        $modulename = $this->request->module();
        $controllername = strtolower($this->request->controller());
        $actionname = strtolower($this->request->action());
        /*
        // token
        $token = $this->request->server('HTTP_TOKEN', $this->request->request('token', cookie('token')));

        $path = str_replace('.', '/', $controllername) . '/' . $actionname;
        // 设置当前请求的URI
        $this->auth->setRequestUri($path);
        // 检测是否需要验证登录
        if (!$this->auth->match($this->noNeedLogin))
        {
            //初始化
            $this->auth->init($token);
            //检测是否登录
            if (!$this->auth->isLogin())
            {
                $this->error(__('Please login first'), null, 401);
            }
            // 判断是否需要验证权限
            if (!$this->auth->match($this->noNeedRight))
            {
                // 判断控制器和方法判断是否有对应权限
                if (!$this->auth->check($path))
                {
                    $this->error(__('You have no permission'), null, 403);
                }
            }
        }
        else
        {
            // 如果有传递token才验证是否登录状态
            if ($token)
            {
                $this->auth->init($token);
            }
        }
        */
        $upload = \app\common\model\Config::upload();
        // 上传信息配置后
        Hook::listen("upload_config_init", $upload);
        Config::set('upload', array_merge(config('upload.'), $upload));
        // 加载当前控制器语言包
        $this->loadlang($controllername);
    }
    /**
     * 测试方法
     * @method      post
     * @param       string      $uusername      用户名
     * @param       string      $password       密码
     * @return      接口有什么用的作用
     * @returnparam code        int             接口标志位
     * @returnparam message     string          接口返回的操作信息
     * @returnobject    data|返回用户对象
     * @returnparam     userid  int             用户编号
     * @returnparam     nickname  string        用户昵称
     */
    public function test(){
        $this->success('返回成功');
    }
    
    /**
     * 加载语言文件f
     * @method      post
     * @param       string      $name           语言文件名
     * @return      接口的目的是加载语言文件
     * @returnparam     code    int     接口标志位
     * @returnparam     message     string      接口返回的操作信息
     * @returnobject    返回用户对象
     * @returnparam     remark  string      备注
     */
    public function langl($name){
        Lang::load(APP_PATH . $this->request->module() . '/lang/' . $this->request->langset() . '/' . str_replace('.', '/', $name) . '.php');
    }

}
